Programming language 2

2015-11-06

Programming Language 2


前言

刚刚结束这门课的期中考试,老师讲课内容很深,考试也很难,并且提高了自己对编程语言的理解,有必要做一个记录。

这一部分对应的是Algol68和Python里的一些特性。

Referfence & Value

x=x+2,这个赋值中x是int型,按照我们的理解是把x的值加上2再赋值给x。然而,这只是现代的编程语言高度抽象化后的结果。 int x,表示我们申明了一个整型,name是x。在Algol68中,这表示的是x是指向int的引用。 x=x+2,右边的x会deref,从引用变为int,然后相加,最后x再指向这个int值。

最后,y=2,x=5。 在这个图中,r:=3,3是int值,而左边的r是引用,指向的是x,也可以理解成 ref ref int类型。最后一个问题,z会不断deref,直到找到int值。

Array

  • 维度: 在数组中,类型变得不重要了,反而维度很重要。相同的维度,他们就是相同的。 [1:100,1:n] real 与 [1:10,7:11] int 是相同的。

  • 动态数组: Flex [1:0] int obj数组长度为0,动态的,当赋值的时候才确定长度。

Structure

mode bin_tree = struct(int data, REFbin_tree l_child, r_child)支持递归定义。

Union

mode combine = UNION(int,bool) combine x,这里,x可以是int也可以时bool型

Expression

Iterator

迭代器是个好东西!!!!! 参考这里

Category: class_study Tagged: class

comments


Page 1 of 1